home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / jcool01.zip / TEST_DT.C < prev    next >
C/C++ Source or Header  |  1992-10-05  |  8KB  |  262 lines

  1. //
  2. // Copyright (C) 1991 Texas Instruments Incorporated.
  3. //
  4. // Permission is granted to any individual or institution to use, copy, modify,
  5. // and distribute this software, provided that this complete copyright and
  6. // permission notice is maintained, intact, in all copies and supporting
  7. // documentation.
  8. //
  9. // Texas Instruments Incorporated provides this software "as is" without
  10. // express or implied warranty.
  11. //
  12.  
  13. #if defined(DOS)
  14. extern "C" {
  15. #include <string.h>                // for strcmp()
  16. }
  17. #else
  18. #include <string.h>                // for strcmp()
  19. #endif
  20.  
  21. #include <cool/Date_Time.h>
  22. #include <test.h>
  23.  
  24.  
  25. // the tst function helps make the TESTS for the parser easier
  26. // and cleaner.
  27.  
  28. int tst(CoolDate_Time& obj, int yr, int mo,int da,int hr,int mn,int sc) {
  29.   if (obj.get_year() == yr &&
  30.       obj.get_mon() == mo-1 &&
  31.       obj.get_mday() == da &&
  32.       obj.get_hour() == hr &&
  33.       obj.get_min() == mn &&
  34.       obj.get_sec() == sc ) return(1);
  35.   else return(0);
  36. }
  37.  
  38. void test_date_time() {    
  39.   set_default_country (UNITED_STATES);
  40.   set_default_time_zone(US_CENTRAL);
  41.   CoolDate_Time d3;
  42.   TEST("set_default_country(US)",strcmp (d3.get_country(),"United States"),0);
  43.   TEST("set_default_time_zone(CST)",strcmp(d3.get_time_zone(),"US/Central"),0);
  44.   CoolDate_Time current;
  45.   current.set_local_time();
  46.   int year = current.get_year();
  47.   int month = current.get_mon();
  48.   month++;
  49.   int day = current.get_mday();
  50.   CoolDate_Time d1; 
  51.   d1.set_country(UNITED_STATES);
  52.   TEST ("d1.set_country(UNITED_STATES)", strcmp (d1.get_country(),
  53.     "United States"), 0);
  54.   d1.set_time_zone(US_CENTRAL);
  55.   TEST ("d1.set_time_zone(US_CENTRAL)", strcmp (d1.get_time_zone(),
  56.     "US/Central"), 0);
  57.  
  58.   d1.parse("03/10/90, 4:30am");
  59.   TEST ("03/10/90, 4:30am", tst(d1,1990,3,10,4,30,0), 1);
  60.  
  61.   d1.parse("03/10/90, 4:30 pm");
  62.   TEST ("03/10/90, 4:30 pm", tst(d1,1990,3,10,16,30,0),1);
  63.  
  64.   d1.parse("03/10/20, 4:30pm");
  65.   TEST ("03/10/20, 4:30pm", tst(d1,year,3,10,20,4,30),1);
  66.   
  67.   d1.parse( "4/21/90");
  68.   TEST ("4/21/90",tst(d1,1990,4,21,0,0,0),1);
  69.   
  70.   d1.parse( " 90 5:15Am ");
  71.   TEST (" 90 5:15Am ", tst(d1,1990,1,1,5,15,0),1);
  72.   
  73.   d1.parse("3 pM 90");
  74.   TEST ("3 pM 90",tst(d1,1990,1,1,15,0,0),1);
  75.     
  76.   d1.parse( "4pm 1 5 94");
  77.   TEST ("4pm 1 5 94", tst(d1,1994,1,5,16,0,0),1);
  78.   
  79.   d1.set_country(UNITED_KINGDOM);
  80.   d1.set_time_zone(GB_EIRE);
  81.   d1.parse( "4pm 1 5 94");
  82.   TEST ("4pm 1 5 94", tst(d1,1994,5,1,16,0,0),1);
  83.  
  84.   d1.set_country(SWEDEN);
  85.   d1.set_time_zone(WET);
  86.   d1.parse( "4pm 94 1 5 ");
  87.   TEST ("4pm 94 1 5", tst(d1,1994,5,1,16,0,0),1);
  88.  
  89.   d1.set_country(FRENCH_CANADIAN);
  90.   d1.set_time_zone(US_CENTRAL);
  91.   d1.parse( "4pm 94 1 5 ");
  92.   TEST ("4pm 94 1 5", tst(d1,1994,5,1,16,0,0),1);
  93.   
  94.   d1.parse( "1984 4 23");
  95.   TEST ("1984 4 23", tst(d1,1984,4,23,0,0,0),1);
  96.  
  97.   d1.set_country(UNITED_KINGDOM);
  98.   d1.set_time_zone(GB_EIRE);
  99.   d1.parse( "3 22 1975");
  100.   TEST ("3 22 1975", tst(d1,1975,3,22,0,0,0),1);
  101.  
  102.   d1.set_country(UNITED_STATES);
  103.   d1.set_time_zone(US_CENTRAL);
  104.   d1.parse( "24 3 1987"); 
  105.   TEST ("24 3 1987", tst(d1,1987,3,24,0,0,0),1);
  106.   
  107.   d1.parse( "4 2 3 4 5pm");
  108.   TEST ("4 2 3 4 5pm", tst(d1,year,4,2,15,4,5),1);
  109.  
  110.   d1.parse( "4 pm 4");
  111.   TEST("4 pm 4", tst(d1,year,month,4,16,0,0),1);
  112.  
  113.   d1.parse( " 05 05 05 05 05");
  114.   TEST (" 05 05 05 05 05",tst(d1,year,5,5,5,5,5),1);
  115.   
  116.   d1.parse( "2 22 3");
  117.   TEST("2 22 3",tst(d1,year,2,22,3,0,0),1);
  118.  
  119.   d1.parse( " 05 05 05 FEB 05 05");
  120.   TEST(" 05 05 05 FEB 05 05", tst(d1,year,5,5,5,2,5),1);
  121.   
  122.   d1.parse( "Jun 4 1991, 4:40 pm");
  123.   TEST("Jun 4 1991, 4:40 pm", tst(d1,1991,6,4,16,40,0),1);
  124.   
  125.   d1.parse( "30 NovEMber 91");
  126.   TEST("30 NovEMber 91",tst(d1,1991,11,30,0,0,0),1);
  127.   
  128.   d1.parse( "march 10");
  129.   TEST("march 10",tst(d1,year,3,10,0,0,0),1);
  130.  
  131.   d1.set_time_zone(NZ);
  132.   d1.parse( "5:44pm 6 15 90");
  133.   TEST ("d1.get_time_zone()", strcmp (d1.get_time_zone(),"NZ"), 0);
  134.  
  135.   d1.parse( "5:44pm 6 15 90", 1);
  136.   TEST("5:44pm 6 15 90", tst(d1,1990,6,15,17,44,0),1);
  137.   TEST ("d1.get_time_zone()", strcmp (d1.get_time_zone(),"NZ"), 0);
  138.  
  139.   d1.set_country(UNITED_STATES);
  140.   d1.set_time_zone(US_CENTRAL);
  141.   d1.parse( "5:44pm United States US/Central10 15 86", 1);
  142.   TEST("5:44pm US/Central10 15 86", tst(d1,1986,10,15,17,44,0),1);
  143.   TEST ("d1.get_time_zone()", strcmp (d1.get_time_zone(),"US/Central"), 0);
  144.  
  145.   d1.parse("04/21/63, 4:30am");
  146.   TEST ("04/21/63, 4:30am", tst(d1,1963,4,21,4,30,0), 1);
  147.  
  148.   d1.parse("24 May 1965, 4:30 pm");
  149.   TEST ("24 May 1965, 4:30 pm", tst(d1,1965,5,24,16,30,0),1);
  150.  
  151.   d1.parse( "5:44pm 6 15 1890", 1);
  152.   TEST("5:44pm 6 15 1890", tst(d1,1890,6,15,17,44,0),1);
  153.  
  154.   d1.set_local_time();
  155.   struct tm* t;                     // Temporary pointer variable
  156.   long sys_seconds = time ((long*)0);         // System GMT time in seconds
  157.   t = localtime (&sys_seconds);             // Convert seconds to local time
  158.  
  159.   TEST ("d1.get_sec()", (d1.get_sec() < 60 &&
  160.              d1.get_sec() >= 0 &&
  161.              d1.get_sec() == t->tm_sec), 1);
  162.   TEST ("d1.get_min()", (d1.get_min() < 60 &&
  163.              d1.get_min() >= 0 &&
  164.              d1.get_min() == t->tm_min), 1);
  165.   TEST ("d1.get_hour()", (d1.get_hour() < 24 &&
  166.               d1.get_hour() >= 0 &&
  167.               d1.get_hour() == t->tm_hour), 1);
  168.   TEST ("d1.get_mon()", (d1.get_mon() < 12 &&
  169.              d1.get_mon() >= 0 &&
  170.              d1.get_mon() == t->tm_mon), 1);
  171.   TEST ("d1.get_mday()", (d1.get_mday() < 32 &&
  172.               d1.get_mday() >= 0 &&
  173.               d1.get_mday() == t->tm_mday), 1);
  174.   TEST ("d1.get_year()", (d1.get_year() >= 1989 &&
  175.               d1.get_year() == t->tm_year+1900), 1);
  176.   TEST ("d1.get_yday()", (d1.get_yday() < 367 &&
  177.               d1.get_yday() >= 0 &&
  178.               d1.get_yday() == t->tm_yday), 1);
  179.   TEST ("d1.is_day_light_savings()", (d1.is_day_light_savings() ? 1 : 0),
  180.     t->tm_isdst);
  181.   TEST ("d1.set_local_time()",(d1.get_min() == t->tm_min &&
  182.                    d1.get_hour() == t->tm_hour &&
  183.                    d1.get_mday() == t->tm_mday &&
  184.                    d1.get_mon() == t->tm_mon &&
  185.                    d1.get_year() == t->tm_year+1900 &&
  186.                    d1.get_wday() == t->tm_wday &&
  187.                    d1.get_yday() == t->tm_yday), 1);
  188.   CoolDate_Time d2 = d1;
  189.   TEST ("CoolDate_Time d2 = d1", 1, 1);
  190.   TEST ("d1+=SECOND", (d1+=SECOND, d1-d2 == SECOND), 1);
  191.   d1 = d2;
  192.   TEST ("d1+=MINUTE", (d1+=MINUTE, d1-d2 == MINUTE), 1);
  193.   d1 = d2;
  194.   TEST ("d1+=HOUR", (d1+=HOUR, d1-d2 == HOUR), 1);
  195.   d1 = d2;
  196.   TEST ("d1+=DAY", (d1+=DAY, d1-d2 == DAY), 1);
  197.   d1 = d2;
  198.   TEST ("d1+=WEEK", (d1+=WEEK, d1-d2 == WEEK), 1);
  199.   d1 = d2;
  200.   TEST ("d1+=YEAR", (d1+=YEAR, d1-d2 == YEAR), 1);
  201.   d1 = d2;
  202.   TEST ("d1-=SECOND", (d1-=SECOND, d2-d1 == SECOND), 1);
  203.   d1 = d2;
  204.   TEST ("d1-=MINUTE", (d1-=MINUTE, d2-d1 == MINUTE), 1);
  205.   d1 = d2;
  206.   TEST ("d1-=HOUR", (d1-=HOUR, d2-d1 == HOUR), 1);
  207.   d1 = d2;
  208.   TEST ("d1-=DAY", (d1-=DAY, d2-d1 == DAY), 1);
  209.   d1 = d2;
  210.   TEST ("d1-=WEEK", (d1-=WEEK, d2-d1 == WEEK), 1);
  211.   d1 = d2;
  212.   TEST ("d1-=YEAR", (d1-=YEAR, d2-d1 == YEAR), 1);
  213.   d1 = d2;
  214.   TEST ("d1.incr_sec(5)",(d1.incr_sec(5), d1-d2 == SECOND*5), 1);
  215.   d1 = d2;
  216.   TEST ("d1.incr_min(5)",(d1.incr_min(5), d1-d2 == MINUTE*5), 1);
  217.   d1 = d2;
  218.   TEST ("d1.incr_hour(5)",(d1.incr_hour(5), d1-d2 == HOUR*5), 1);
  219.   d1 = d2;
  220.   TEST ("d1.incr_day(5)",(d1.incr_day(5), d1-d2 == DAY*5), 1);
  221.   d1 = d2;
  222.   TEST ("d1.incr_week(5)",(d1.incr_week(5), d1-d2 == WEEK*5), 1);
  223.   d1 = d2;
  224.   TEST ("d1.decr_sec(5)",(d1.decr_sec(5), d2-d1 == SECOND*5), 1);
  225.   d1 = d2;
  226.   TEST ("d1.decr_min(5)",(d1.decr_min(5), d2-d1 == MINUTE*5), 1);
  227.   d1 = d2;
  228.   TEST ("d1.decr_hour(5)",(d1.decr_hour(5), d2-d1 == HOUR*5), 1);
  229.   d1 = d2;
  230.   TEST ("d1.decr_day(5)",(d1.decr_day(5), d2-d1 == DAY*5), 1);
  231.   d1 = d2;
  232.   TEST ("d1.decr_week(5)",(d1.decr_week(5), d2-d1 == WEEK*5), 1);
  233.   TEST ("d1 == d2", d1 == d2, FALSE);
  234.   TEST ("d1 != d2", d1 != d2, TRUE);
  235.   TEST ("d1 < d2", d1 < d2, TRUE);
  236.   TEST ("d1 <= d2", d1 <= d2, TRUE);
  237.   TEST ("d1 > d2", d1 > d2, FALSE);
  238.   TEST ("d1 >= d2", d1 >= d2, FALSE);
  239.   d1 = d2;
  240.   d1 += ((2*YEAR) + (14*WEEK) + (4*DAY) +
  241.      (15*HOUR) + (27*MINUTE) + (43*SECOND));
  242.   TEST ("d1.ascii_duration(d2)", strcmp (d1.ascii_duration(d2),
  243.     "2 years, 14 weeks, 4 days, 15 hours, 27 minutes, 43 seconds"), 0);
  244. }
  245.  
  246. void test_leak() {
  247.   for (;;) {
  248.     test_date_time();
  249.   }
  250. }
  251.  
  252.  
  253. int main (void) {
  254.   START("CoolDate_Time");
  255.   test_date_time();
  256. #if LEAK
  257.   test_leak();
  258. #endif
  259.   SUMMARY();
  260.   return 0;
  261. }
  262.